package com.example.demo.test.leetcode.day1216;

import java.util.*;

/**
 * 给定一种规律 pattern 和一个字符串 str ，判断 str 是否遵循相同的规律。
 * <p>
 * 这里的 遵循 指完全匹配，例如， pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/word-pattern
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution1216 {
    public static void main(String[] args) {
        System.out.println(wordPattern("aa", "dog dog dog"));
    }

    public static boolean wordPattern(String pattern, String s) {
        char[] charArray = pattern.toCharArray();
        String[] split = s.split(" ");
        if (charArray.length!=split.length)
            return false;
        List<String> list = Arrays.asList(split);
        Map<String, String> map = new HashMap<>();
        int i = 0;
        for (char p : charArray) {
            if (!map.containsKey(p + "")) {
                // 不存在key，但是value已经有了
                if (map.containsValue(list.get(i)))
                    return false;
                // 不存在key 存入
                map.put(p + "", list.get(i));
            }
            if (!map.get(p + "").equals(list.get(i++)))
                return false;
        }
        return true;
    }

}
